﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using DataAccess.Datatypes;

// NOTA: puede usar el comando "Cambiar nombre" del menú "Refactorizar" para cambiar el nombre de clase "OtrosGrupos" en el código, en svc y en el archivo de configuración a la vez.
public class OtrosGrupos : IOtrosGrupos
{
	public void DoWork()
	{
	}

    public List<Bienes> listarBienes(ListarBienesInput pedido)
    {
        List<Bienes> result = new List<Bienes>();
        BussinesLayer.Services.GoodServices gs = new BussinesLayer.Services.GoodServices();
        IEnumerable<Good> bienes= gs.GetBestGoods(pedido.IdInstancia, pedido.CantidadDeBienesListados);
       
        foreach (var item in bienes) 
        {
            Bienes b1 = new Bienes();
            b1.Datos = item.Attributes;
            b1.Latitud = item.Latitude;
            b1.Longitud = item.Longitude;
            b1.Url = item.Url;
            b1.UrlImagen = item.ImageUrl;
            b1.Nombre = item.Name;

            result.Add(b1);
        }

        return result;
    }

    public List<Instancias> listarInstancias()
    {
        BussinesLayer.Services.SiteServices sS = new BussinesLayer.Services.SiteServices();
        IEnumerable<Site> sitios = sS.GetSitesWithMetadata();
        List<Instancias> lista = new List<Instancias>();

        foreach (var item in sitios) 
        {
            Instancias l1 = new Instancias();
            l1.Id = item.id;
            l1.Nombre = item.Name;
            l1.NombreDelBien = item.Name;
            l1.Url = "http://www.ol4rent.com/" + item.Name ;
            //TODO: falta MetaData
           List<Propiedad> metadata = new List<Propiedad>();
           foreach (var atributo in item.Attributes)
           {
               Propiedad p = new Propiedad();
               p.Nombre = atributo.Name;
               //TODO: esperar que se agregue atributo de tipo de dato en siteAttribute para leerlo
               p.TipoDato = "String";
               metadata.Add(p);
           }
           
            l1.Metadata=metadata;
            lista.Add(l1);
        }
        return lista;
    }
}
